﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JshRCSWebApi.Infrastructure.Domain.DTO.SysVehicle.VehicleTask
{
    /// <summary>
    /// 纯固定路径导航
    /// </summary>
    public class robot_task_gotarget_DTO
    {
        /// <summary>
        /// 起始站点名称
        ///当起始位置不在一个站点上，而是机器人当前位置时，其值固定为"SELF_POSITION"
        /// </summary>
        public string source_id { get; set; }
        /// <summary>
        /// 目标站点名称
        ///当机器人在原地执行operation时，其固定值为 "SELF_POSITION"
        /// </summary>
        public string id { get; set; }
    }
    /// <summary>
    /// 高级路径导航，支持用户自定义可选属性。比如支持配置最大速度，最大加速度，到点角度等参数。一
    /// </summary>
    public class robot_task_gotarget_senior_DTO:robot_task_gotarget_DTO
    {
        /// <summary>
        /// 任务编号
        /// </summary>
        public string task_id { get; set; }
        /// <summary>
        /// 目标站点(世界坐标系)的角度值, 单位 rad
        /// </summary>
        public double angle { get; set; }
        /// <summary>
        /// 运动方式，只能为 "forward"(正走) 或 "backward"(倒走)，如果缺省则使用路径上配置的方式
        /// </summary>
        public string method { get; set; }
        /// <summary>
        /// 最大速度, 单位 m/s
        /// </summary>
        public double max_speed { get; set; }
        /// <summary>
        /// 最大角速度, 单位 rad/s
        /// </summary>
        public double max_wspeed { get; set; }
        /// <summary>
        /// 最大加速度, 单位 m/s^2
        /// </summary>
        public double max_acc { get; set; }
        /// <summary>
        /// 最大角加速度, 单位 rad/s^2
        /// </summary>
        public double max_wacc { get; set; }
        /// <summary>
        /// 导航结束后，机器人等待时间，单位 ms
        /// </summary>
        public int duration { get; set; }
        /// <summary>
        /// 全向车保持的角度（暂不使用）
        /// </summary>
        public int orientation { get; set; }
        /// <summary>
        /// 是否随动
        /// </summary>
        public bool spin { get; set; }
        /// <summary>
        /// 延迟结束导航状态的时间，单位 ms，缺省为 0
        /// </summary>
        public int delay { get; set; }
        /// <summary>
        /// -1: 顺时针转
        ///0: 朝近的方向旋转
        ///1: 逆时针转
        /// </summary>
        public int rot_dir { get; set; }
        /// <summary>
        /// 到点位置精度 单位 m
        /// </summary>
        public double reach_dist { get; set; }
        /// <summary>
        /// 到点角度精度 单位 rad
        /// </summary>
        public double reach_angle { get; set; }
        /// <summary>
        /// "Action"表达在当前点作动作，或者“GotoSpecifiedPose”表示路径导航
        /// </summary>
        public string skill_name { get; set; }
    }
    /// <summary>
    /// 路径导航带有顶升设备
    /// </summary>
    public class robot_task_gotarget_operation_DTO: robot_task_gotarget_DTO
    {
        /// <summary>
        /// 任务编号
        /// </summary>
        public string task_id { get; set; }
        /// <summary>
        /// 控制顶升设备的动作，支持的动作
        ///JackLoad（顶升抬起加载货物，会将机器人设置为载货状态）
        ///JackUnload(顶升下降，卸载货物，会将机器人取消载货状态)
        ///JackHeight(顶升顶高)
        ///Wait(不做动作)
        /// </summary>
        public string operation { get; set; }
        /// <summary>
        /// 顶升的高度，如果JackLoad和JackUnload时，采用此数值作为顶升目标高度
        /// </summary>
        public double jack_height { get; set; }

    }
}
